package Main;


/**
 *
 * @author Emmanuel
 */
class BasicObstacle extends Obstacle {
    
    protected int TAILLE_ZONE_COLLISION=10;
    private static int REACTION_DISTANCE=200; //80 // = perso.sizeX / 2

    public BasicObstacle(Position p, int sx, int sy) {
        this.pos=p;
        this.sizeX=sx;
        this.sizeY=sy;
        this.soundStart=p.getX()+sx/2 - Personnage.LONGUEUR_SAUT/2 - REACTION_DISTANCE;
        this.soundEnd=this.soundStart+Personnage.getDeplacement()+1; // +1 ?
    }

    /**
     * Un BasicObstacle a une collision mortelle sur le cote gauche et une 
     * collision solide sur le haut.
     * @param p le personnage evec qui on verifie si il y as collision;
     * @return Le type de collision (voir enum TypeColision);
     */
    @Override
    public TypeColision collision(Personnage p) {
        
        // Collision du cote droit
        if(! (p.getPosition().getX()+p.getSizeX()<=this.getPosition().getX()
                || p.getPosition().getX()>=this.TAILLE_ZONE_COLLISION+this.getPosition().getX()
                || p.getPosition().getY()+p.getSizeY()<this.getPosition().getY()
                || p.getPosition().getY()>=this.getSizeY()+this.getPosition().getY()-this.TAILLE_ZONE_COLLISION)
        // Collision d'en bas
                || !(p.getPosition().getX()+p.getSizeX()<=this.getPosition().getX()
                || p.getPosition().getX()>=this.getSizeX()+this.getPosition().getX()
                || p.getPosition().getY()+p.getSizeY()<this.getPosition().getY()
                || p.getPosition().getY()>=this.getSizeY()+this.getPosition().getY()-this.TAILLE_ZONE_COLLISION)) {
            
            return TypeColision.MORTELLE;
        }
        // Collision d'en haut
        else if(! (p.getPosition().getX()+p.getSizeX()<=this.getPosition().getX()
                || p.getPosition().getX()>=this.getSizeX()+this.getPosition().getX()
                || p.getPosition().getY()+p.getSizeY()<this.getPosition().getY()-this.TAILLE_ZONE_COLLISION+sizeY
                || p.getPosition().getY()>=this.getSizeY()+this.getPosition().getY())) {
            
            return TypeColision.SOLIDE;
        }
 
        return TypeColision.AUCUNE;
    }
}
